<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>ffmpeg.wasm video-only example - Record Plugin for Video.js</title>

  <link href="../../node_modules/video.js/dist/video-js.min.css" rel="stylesheet">
  <link href="../../dist/css/videojs.record.css" rel="stylesheet">
  <link href="../assets/css/examples.css" rel="stylesheet">

  <script src="../../node_modules/video.js/dist/video.min.js"></script>
  <script src="../../node_modules/recordrtc/RecordRTC.js"></script>
  <script src="../../node_modules/webrtc-adapter/out/adapter.js"></script>
  <script src="../../node_modules/@ffmpeg/ffmpeg/dist/umd/ffmpeg.js"></script>
  <script src="../../node_modules/@ffmpeg/util/dist/umd/index.js"></script>

  <script src="../../dist/videojs.record.js"></script>
  <script src="../../dist/plugins/videojs.record.ffmpeg-wasm.js"></script>

  <script src="../browser-workarounds.js"></script>

  <style>
  /* change player background color */
  #myVideo {
      background-color: #54a86b;
  }
  </style>
</head>
<body>

<video id="myVideo" playsinline class="video-js vjs-default-skin"></video>

<script>
/* eslint-disable */
var options = {
    controls: true,
    width: 320,
    height: 240,
    fluid: false,
    bigPlayButton: false,
    controlBar: {
        volumePanel: false
    },
    plugins: {
        record: {
            audio: false,
            video: true,
            maxLength: 20,
            debug: true,
            displayMilliseconds: false,
            convertEngine: 'ffmpeg.wasm',
            // multi-threaded worker
            coreURL: '/node_modules/@ffmpeg/core-mt/dist/umd/ffmpeg-core.js',
            convertWorkerURL: '/node_modules/@ffmpeg/core-mt/dist/umd/ffmpeg-core.worker.js',
            audioWebAssemblyURL: '/node_modules/@ffmpeg/core-mt/dist/umd/ffmpeg-core.wasm',
            // convert recorded data to MP4 (and copy over audio data without encoding)
            convertOptions: ['-c:v', 'libx264', '-crf', '22', '-c:a', 'copy', '-f', 'mp4'],
            // specify output mime-type
            pluginLibraryOptions: {
                outputType: 'video/mp4'
            }
        }
    }
};

// apply some workarounds for opera browser
applyVideoWorkaround();

var player = videojs('myVideo', options, function() {
    // print version information at startup
    videojs.log('Using video.js', videojs.VERSION,
        'with videojs-record', videojs.getPluginVersion('record'),
        'and recordrtc', RecordRTC.version);
});
// error handling
player.on('deviceError', function() {
    console.log('device error:', player.deviceErrorCode);
});
player.on('error', function(element, error) {
    console.error(error);
});

// user clicked the record button and started recording
player.on('startRecord', function() {
    console.log('started recording!');
});

// converter started processing
player.on('startConvert', function() {
    console.log('started converting!');
});

// user completed recording and stream is available
player.on('finishRecord', function() {
    // the blob object contains the recorded data that
    // can be downloaded by the user, stored on server etc.
    console.log('finished recording: ', player.recordedData);
});

// converter completed and stream is available
player.on('finishConvert', function() {
    // the convertedData object contains the recorded data that
    // can be downloaded by the user, stored on server etc.
    console.log('finished converting: ', player.convertedData);
});
</script>
</body>
</html>